$fn=300;

box(3);
handle(3);

module box(r=4,h=200){
  
    translate([0,0,-104])rotate([0,0,30])color("red")cylinder(h=8,r=r*3.8,center=true,$fn=6);
    difference(){
   rotate([0,0,30])color("red")cylinder(h=h,r=r*3.8,center=true,$fn=6);
   cylinder(h=h+2,r=r,center=true);
   make_ring_of(radius = 2*r+1, count = 6)
     union(){    
        cylinder(h=h+2,r=r,center=true);
        translate([r*3,(2*r+1)*cos(30)-r,0])cube([3,1.6,h+2],center=true);
    }    
}       
}        

module handle(r=4,h=4){
//rotate([0,0,30])color("red")cylinder(h=h,r=r*3.8,center=true,$fn=6);
//cylinder(h=h+2,r=r,center=true);
make_ring_of(radius = 2*r+1, count = 6)
    translate([0,0,$t*100])union(){    
       cylinder(h=h,r=r-0.2,center=true);
       translate([r*3,(2*r+1)*cos(30)-r,0])cube([3,1.6,h],center=true);
    
        
        }    
}
 

        
module make_ring_of(radius, count){
    for (a = [0 : count - 1]) {
        angle = a * 360 / count;
        translate(radius * [sin(angle), -cos(angle), 0])
            rotate([0, 0, angle])
                children();
    }
}
